#include <bits/stdc++.h>
#define int long long
using namespace std;

const int maxn = 1e5+5;
int arr[maxn];
int n, k;


bool check(int h){
	int cnt = 0;
	for (int i=1;i<=n;i++) {
		cnt += (arr[i]/h);
	}
	return cnt >= k;
}


void solve(){
	cin >> n >> k;
	for (int i=1;i<=n;i++) {
		cin >> arr[i];
	}
	int l=0; // 需要用 0 表示最后没有满足条件的
	int r=1e9+1;
	while (l<r-1) { // l < r-1 那么 l 的范围就是 1~r-1, r 的范围就是 2~1e9
		int mid = ((r-l)>>1) + l;
		if (check(mid)) {
			l=mid; // l 一定是能满足的
		} else {
			r=mid;
		}
	}
	// 最终我们要返回的是 l
	// 但是 l 的范围是 1~r-1, 所以 r 的初始值应该 > 1e9
	if (l==0) {
		cout << -1 << '\n';
	} else {
		cout << l << '\n';		
	}
	
}


signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int t;
	t=1;
	while(t--){
		//TODO
		solve();
	}
	return 0;
}
